// src/api/employeeApi.js
import request from '../utils/request';

const employeeApi = {
  /**
   * 分页查询员工列表
   * @param {Object} params - 查询参数
   * @returns {Promise} 
   */
  getEmployeeList: (params) => request({
    url: '/api/employee/page',
    method: 'post',
    data: params
  }),


  /**
   * 获取员工详情
   * @param {number} id - 员工ID
   * @returns {Promise}
   */
  getEmployeeDetail: (id) => request({
    url: `/api/employee/${id}`,
    method: 'get'
  }),

  /**
   * 新增员工
   * @param {Object} employeeData - 员工数据
   * @returns {Promise}
   */
  createEmployee: (employeeData) => request({
    url: '/api/employee',
    method: 'post',
    data: employeeData,
    transformResponse: [
      (data) => {
        try {
          const parsed = JSON.parse(data);
          return parsed.data || parsed; // 确保返回data字段或整个响应
        } catch (e) {
          return data; // 返回原始数据
        }
      }
    ]
  }),

  /**
   * 公开接口：问卷提交（不需要登录）
   * @param {Object} employeeData - 员工数据
   * @returns {Promise}
   */
  submitQuestionnaire: (employeeData) => request({
    url: '/api/employee/public/questionnaire',
    method: 'post',
    data: employeeData,
    transformResponse: [
      (data) => {
        try {
          const parsed = JSON.parse(data);
          return parsed.data || parsed;
        } catch (e) {
          return data;
        }
      }
    ]
  }),

  /**
   * 更新员工信息
   * @param {Object} employeeData - 员工数据
   * @returns {Promise}
   */
  updateEmployee: (employeeData) => request({
    url: '/api/employee',
    method: 'put',
    data: employeeData
  }),

  /**
   * 删除员工
   * @param {number} id - 员工ID
   * @returns {Promise}
   */
  deleteEmployee: (id) => request({
    url: `/api/employee/${id}`,
    method: 'delete'
  }),

  /**
   * 批量删除员工
   * @param {Array} ids - 员工ID数组
   * @returns {Promise}
   */
  batchDeleteEmployees: (ids) => request({
    url: '/api/employee/batch',
    method: 'delete',
    data: ids
  }),

  /**
   * 更新员工状态
   * @param {number} id - 员工ID
   * @param {number} status - 新状态
   * @returns {Promise}
   */
  updateEmployeeStatus: (id, status) => request({
    url: `/api/employee/${id}/status`,
    method: 'put',
    params: { status }
  }),

  /**
   * 根据项目编号查询员工
   * @param {string} projectCode - 项目编号
   * @returns {Promise}
   */
  getEmployeesByProject: (projectCode) => request({
    url: `/api/employee/project/${projectCode}`,
    method: 'get'
  }),

  /**
   * 根据身份证号查询员工
   * @param {string} idCard - 身份证号
   * @returns {Promise}
   */
  getEmployeeByIdCard: (idCard) => request({
    url: `/api/employee/idCard/${idCard}`,
    method: 'get'
  }),

  /**
   * 根据员工状态查询员工列表
   * @param {number} status - 员工状态（1-在职，0-离职）
   * @returns {Promise}
   */
  getEmployeesByStatus: (status) => request({
    url: `/api/employee/status/${status}`,
    method: 'get'
  }),

  /**
   * 搜索员工（按姓名或编号）
   * @param {string} keyword - 搜索关键词（姓名或编号）
   * @returns {Promise}
   */
  searchEmployees: (keyword) => request({
    url: '/api/employee/search',
    method: 'get',
    params: { keyword }
  }),

  /**
   * 获取所有在职员工列表（用于选择）
   * @returns {Promise}
   */
  getAllActiveEmployees: () => request({
    url: '/api/employee/active',
    method: 'get'
  }),

  /**
   * 获取所有员工列表（用于选择）
   * @returns {Promise}
   */
  getAllEmployees: () => request({
    url: '/api/employee/all',
    method: 'get'
  })
};

export default employeeApi;